/*
    意义：中间存储一条日志消息所需要的各项要素
1.日志的输出时间  用于过滤日志的输出时间
2.日志等级        用于进行日志的过滤分析
3.源文件名称      
4.源代码行号      用于定位出现错误的代码位置
5.线程ID         用于过滤出现错误的线程
6.日志主体消息    
7.日志器名称      （当前支持多日志器的同时使用）
*/


#pragma once

#include "util.hpp"
#include "level.hpp"
#include <iostream>
#include <string>
#include <thread>

namespace iceLogs
{
    struct logMsg
    {
        time_t _ctime;//产生日志的时间戳
        logLevel::value _level;//日志等级
        std::string _file;//文件名称
        std::thread::id _tid;//线程ID
        size_t _line;//产生问题的行号
        std::string _logger;//日志器名称
        std::string _payload;//有效载荷

        logMsg(logLevel::value level, const std::string file, size_t line, const std::string logger, const std::string payload)
                :_ctime(util::Date::getTime())
                ,_level(level)
                ,_file(file)
                ,_tid(std::this_thread::get_id())
                ,_line(line)
                ,_logger(logger)
                ,_payload(payload)
                {}


    };
}

